package pers.tz.题目;

import java.util.HashSet;
import java.util.Set;

/**
 * @author irony
 * @date 2024-03-14
 */
public class 字符串分类 {
// 只由小写字母（a~z）组成的一批字符串，都放在字符类型的数组String[] arr中，
// 如果其中某两个字符串所含有的字符种类完全一样，就将两个字符串算作一类，
// 比如：baacbba和bac就算作一类。返回arr中有多少类？
    public static void main(String[] args) {
        System.out.println(howManyTypes(new String[] {"baacbba", "bac"}));
    }

    private static int howManyTypes(String[] arr) {
        Set<Integer> set = new HashSet<>();

        for (String str : arr) {
            int key = 0;
            for (char c : str.toCharArray()) {
                // 1左移位数，或进去
                key |= 1 << (c - 'a');
            }
            set.add(key);
        }

        return set.size();
    }
}
